﻿Public Class frmMaszyna

    Private mvarChanged As Boolean = False
    Private mvarCancel As Boolean = False
    Private mvarMaszyna As clsInhMaszyna
    Private mvarDbHolder As clsDataBase
    Private mvarWzynEdytowania As Boolean = False
    Private mvarBlokowanie As clsRecordLock
    Private mvarWyznBlokowania As Boolean = False
    Private mvarUzytkownik As clsUzytkownik
    Private mvarKomentarz As String

    Public Sub New(Id As Integer)

        ' To wywołanie jest wymagane przez projektanta.
        InitializeComponent()

        ' Dodaj inicjację po wywołaniu funkcji InitializeComponent().
        mvarDbHolder = New clsDataBase(VAR_CONNECTION_PARAMETERS, VAR_ERROR_HANDLER)
        mvarUzytkownik = CType(clsUzytkownik.Instance(), clsUzytkownik)
        PobierzGrupyMaszyny()

        If Id = 0 Then
            mvarMaszyna = New clsInhMaszyna()
            WyczyscInformacje()
            mvarChanged = False
        Else
            mvarMaszyna = New clsInhMaszyna(Id, mvarDbHolder)
            Blokowanie()
            Me.Text = "WIREMET - EDYCJA MASZYNY"
            UzupelnienieDanych()
            mvarWzynEdytowania = True
            mvarChanged = False
        End If

    End Sub

    Private Sub Blokowanie()

        mvarBlokowanie = New clsRecordLock(VAR_CONNECTION_PARAMETERS, mvarMaszyna.Id, "oem.maszyna", VAR_ERROR_HANDLER, CInt(mvarUzytkownik.Id))
        mvarWyznBlokowania = True

        If Not mvarBlokowanie.RecordLocked Then
            MessageBox.Show("TYLKO DO ODCZYT.", "WIREMET")
            grbDane.Enabled = False
            cmdZapisz.Enabled = False
            cmdWyczysc.Enabled = False
        End If

    End Sub

    Private Sub PobierzGrupyMaszyny()

        Dim lvarDataTable As New DataTable

        lvarDataTable = clsGrupaMaszyny.PobierzWszystkieOpcje(mvarDbHolder, VAR_ERROR_HANDLER)

        If Not lvarDataTable Is Nothing Then
            For Each lvarRow As DataRow In lvarDataTable.Rows
                cmbGrupaMaszyny.Items.Add(New clsGrupaMaszyny(CStr(lvarRow("id")), CStr(IIf(IsDBNull(lvarRow("nazwa")), "", lvarRow("nazwa")))))
            Next
        End If

    End Sub

    Private Sub SprawdzWydluzenie()

        If txtWydluzenie1.Text <> String.Empty Then
            If Not IsNumeric(txtWydluzenie1.Text) Then
                mvarKomentarz = "Wpisz poprawnie wydłużenie_1"
            End If
        End If

        If txtWydluzenie2.Text <> String.Empty Then
            If Not IsNumeric(txtWydluzenie2.Text) Then
                If mvarKomentarz <> String.Empty Then
                    mvarKomentarz = mvarKomentarz & " i wydłużenie_2."
                Else
                    mvarKomentarz = "Wpisz poprawnie wydłużenie_2."
                End If
            ElseIf mvarKomentarz <> String.Empty Then
                mvarKomentarz = mvarKomentarz & "."
            End If
        Else

            If mvarKomentarz <> String.Empty Then
                mvarKomentarz = mvarKomentarz & "."
            End If
        End If

        If txtIloscKamieni.Text <> String.Empty Then
            If Not IsNumeric(txtIloscKamieni.Text) Or InStr(txtIloscKamieni.Text, ",") <> Nothing Or InStr(txtIloscKamieni.Text, "-") <> Nothing Then
                If mvarKomentarz <> String.Empty Then
                    mvarKomentarz = mvarKomentarz & " i ilość kamieni."
                Else
                    mvarKomentarz = "Wpisz poprawnie ilość kamieni."
                End If
            ElseIf mvarKomentarz <> String.Empty Then
                mvarKomentarz = mvarKomentarz & "."
            End If
        Else

            If mvarKomentarz <> String.Empty Then
                mvarKomentarz = mvarKomentarz & "."
            End If
        End If

    End Sub

    Private Sub WyczyscInformacje()

        txtNumer.Text = String.Empty
        cmbGrupaMaszyny.SelectedIndex = -1
        txtNazwa.Text = String.Empty
        txtOpis.Text = String.Empty
        txtWydluzenie1.Text = CStr(0)
        txtWydluzenie2.Text = CStr(0)
        txtIloscKamieni.Text = CStr(0)

    End Sub

    Private Sub UzupelnienieDanych()

        Dim lvarIndex As Integer

        txtNumer.Text = CStr(mvarMaszyna.Numer)
        lvarIndex = cmbGrupaMaszyny.FindString(mvarMaszyna.GrupaMaszyny.Nazwa)
        cmbGrupaMaszyny.SelectedIndex = lvarIndex
        txtNazwa.Text = mvarMaszyna.Nazwa
        txtOpis.Text = mvarMaszyna.Opis
        txtWydluzenie1.Text = mvarMaszyna.Wydluzenie_1
        txtWydluzenie2.Text = mvarMaszyna.Wydluzenie_2
        txtIloscKamieni.Text = CStr(mvarMaszyna.IloscKamieni)

    End Sub

    Private Sub Zapisz()

        SprawdzWydluzenie()
        If Not SprawdzLiczbeCalkowita(txtNumer.Text) Or txtNazwa.Text = String.Empty Or cmbGrupaMaszyny.SelectedIndex = -1 Or txtWydluzenie1.Text = String.Empty Or txtWydluzenie2.Text = String.Empty Or txtIloscKamieni.Text = String.Empty Then
            MessageBox.Show("Podaj poprawnie niezbędne dane.", "WIREMET")
            mvarCancel = True
        ElseIf mvarKomentarz <> String.Empty Then
            MessageBox.Show(mvarKomentarz, "WIREMET")
            mvarKomentarz = String.Empty
        Else

            mvarDbHolder.BeginTrans()
            With mvarMaszyna
                .Id = mvarMaszyna.Id
                .Numer = CInt(Trim(txtNumer.Text))
                .GrupaMaszynyId = CInt(CType(cmbGrupaMaszyny.SelectedItem, clsGrupaMaszyny).Id)
                .Nazwa = Trim(txtNazwa.Text)
                .Opis = Trim(txtOpis.Text)
                .Wydluzenie_1 = Trim(txtWydluzenie1.Text)
                .Wydluzenie_2 = Trim(txtWydluzenie2.Text)
                .IloscKamieni = CInt(Trim(txtIloscKamieni.Text))
                .Save(mvarDbHolder, VAR_ERROR_HANDLER)
            End With

            mvarDbHolder.CommitTrans()
            If mvarWzynEdytowania = False Then
                WyczyscInformacje()
                mvarMaszyna = New clsInhMaszyna()
            End If
            mvarChanged = False
            mvarCancel = False

            MessageBox.Show("Zapisano do bazy.", "WIREMET")
            txtNumer.Focus()
        End If

    End Sub


    Private Sub cmdGrupaMaszyny_Click(sender As Object, e As EventArgs) Handles cmdGrupaMaszyny.Click
        Dim lvarFrm As New frmGrupyMaszyny()
        With lvarFrm
            .Location = New Point(50, 300)
            .ShowDialog()
        End With
    End Sub

    Private Sub cmdZapisz_Click(sender As System.Object, e As System.EventArgs) Handles cmdZapisz.Click
        If mvarChanged Then
            Zapisz()
        Else
            MessageBox.Show("Nie wprowadzono żadnych zmian.", "WIREMET")
        End If
    End Sub

    Private Sub cmdAnuluj_Click(sender As System.Object, e As System.EventArgs) Handles cmdAnuluj.Click
        mvarChanged = False
        Close()
    End Sub

    Private Sub cmdWyczysc_Click(sender As System.Object, e As System.EventArgs) Handles cmdWyczysc.Click
        WyczyscInformacje()
    End Sub


#Region "Changed"

    Private Sub txtNumer_TextChanged(sender As Object, e As System.EventArgs) Handles txtNumer.TextChanged
        mvarChanged = True
    End Sub

    Private Sub txtNazwa_TextChanged(sender As Object, e As System.EventArgs) Handles txtNazwa.TextChanged
        mvarChanged = True
    End Sub

    Private Sub txtOpis_TextChanged(sender As Object, e As EventArgs) Handles txtOpis.TextChanged
        mvarChanged = True
    End Sub

    Private Sub txtWydluzenie1_TextChanged(sender As Object, e As EventArgs) Handles txtWydluzenie1.TextChanged
        mvarChanged = True
    End Sub

    Private Sub txtWydluzenie2_TextChanged(sender As Object, e As EventArgs) Handles txtWydluzenie2.TextChanged
        mvarChanged = True
    End Sub

    Private Sub cmbGrupaMaszyny_SelectedIndexChanged(sender As Object, e As EventArgs) Handles cmbGrupaMaszyny.SelectedIndexChanged
        mvarChanged = True
    End Sub

    Private Sub txtIloscKamieni_TextChanged(sender As Object, e As EventArgs) Handles txtIloscKamieni.TextChanged
        mvarChanged = True
    End Sub

#End Region


    Private Sub frmMaszyna_FormClosed(sender As Object, e As System.Windows.Forms.FormClosedEventArgs) Handles Me.FormClosed
        If mvarWyznBlokowania Then
            If mvarBlokowanie.RecordLocked Then
                mvarBlokowanie.Unlock()
            End If
        End If
        mvarDbHolder.Close()
    End Sub

    Private Sub frmMaszyna_FormClosing(sender As Object, e As System.Windows.Forms.FormClosingEventArgs) Handles Me.FormClosing
        If mvarChanged Then
            Select Case MsgBox("Czy zapisać maszynę do bazy?", MsgBoxStyle.YesNo, "WIREMET")
                Case MsgBoxResult.No
                Case MsgBoxResult.Yes
                    Zapisz()
                    If mvarCancel = True Then
                        e.Cancel = True
                    End If
            End Select
        End If
    End Sub

    Function SprawdzLiczbeCalkowita(ByVal Liczba1 As String) As Boolean

        If Liczba1 <> String.Empty And IsNumeric(Liczba1) Then
            If InStr(Liczba1, ",") = Nothing And CInt(Liczba1) > 0 Then
                Return True
            Else
                Return False
            End If
        Else
            Return False
        End If

    End Function


End Class